home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 2 / Gold Medal Software Volume 2 (Gold Medal) (1994).iso / windows / win31 / macsyma.arj / MACSDEMO.EXE / ODE.OUT < prev    next >
Text File  |  1993-09-14  |  6KB  |  108 lines

  1.  
  2. (c1) /*
  3.           DEMONSTRATION OF PACKAGE `ODE', 
  4.           for Solving Ordinary Differential Equations
  5.  
  6.      1. FIRST ORDER O.D.E.'S
  7. */
  8. (kill(x,y), depends(y,x))$
  9.  
  10. (c2) /* Let's start with some easy ones ... */
  11. diff(y,x)=y*tan(x);
  12. |$label(0,15,Times New Roman,$(d2$))$q(dy,dx)$hinge()$in( = )tan$paren(x)$hinge()$in( )y
  13.  
  14. (c3) ode(%,y,x);
  15. C:\MACSD2B\ode\odeaux.fas being loaded.
  16. C:\MACSD2B\ode\ode2.fas being loaded.
  17. |$label(0,15,Times New Roman,$(d3$))y$hinge()$in( = )%c$hinge()$in( )sec$paren(x)
  18.  
  19. (c4) /* We can find out how we solved it with ... */
  20. method;
  21. |$label(0,15,Times New Roman,$(d4$))linear
  22.  
  23. (c5) /* We can set ODETUTOR:TRUE to get more commentary on what is going on. */
  24. odetutor:true$
  25.  
  26. (c6) /* The following is Murphy-267, solved as a Riccati in the text. */
  27. x^2*diff(y,x)+2+x*y*(4+x*y)=0;
  28. |$label(0,15,Times New Roman,$(d6$))$sup(x,2)$in( )$q(dy,dx)$hinge()$in( + )x$in( )y$in( )$paren(x$in( )y$in( + )4,$(,$))$hinge()$in( + )2$hinge()$in( = )0
  29.  
  30. (c7) ode(%,y,x);
  31. |$label(-1,15,Times New Roman,)Trying  $in() $in()ode2
  32. |$label(0,15,Times New Roman,$(d7$))x$hinge()$in( = )$q(%c$in( )$paren(x$in( )y$in( + )2,$(,$)),x$in( )y$in( + )1)
  33.  
  34. (c8) /* Of course, we know it was a Riccati, but ... */
  35. method;
  36. |$label(0,15,Times New Roman,$(d8$))genhom
  37.  
  38. (c9) /* Hmmmm. Guess Murphy did it the hard way!
  39.        Well, let's have a real Riccati: Murphy-300. */
  40. (1-x^2)*diff(y,x)=1-(2*x-y)*y;
  41. |$label(0,15,Times New Roman,$(d9$))$open($()1$hinge()$in( - )$sup(x,2)$close($))$hinge()$in( )$q(dy,dx)$hinge()$in( = )1$hinge()$in( - )$paren(2$in( )x$in( - )y,$(,$))$in( )y
  42.  
  43. (c10) ode(%,y,x);
  44. |$label(-1,15,Times New Roman,)Trying  $in() $in()ode2
  45. |$label(-1,15,Times New Roman,)Trying  $in() $in()nonlin
  46. C:\MACSD2B\ode\abel.fas being loaded.
  47. |$label(-1,15,Times New Roman,)Trying  $in() $in()riccati
  48. C:\MACSD2B\ode\ricati.fas being loaded.
  49. |$label(-1,15,Times New Roman,)Trying  $in() $in()schmidt
  50. C:\MACSD2B\ode\schmid.fas being loaded.
  51. |$label(-1,15,Times New Roman,)FOUND   $in() $in()$paren(x,[,])
  52. |$label(0,15,Times New Roman,$(d10$))y$hinge()$in( = )$q(x$in( )log$paren(x$in( + )1)$in( - )x$in( )log$paren(x$in( - )1)$in( - )2$in( )%c$in( )x$in( - )2,log$paren(x$in( + )1)$in( - )log$paren(x$in( - )1)$in( - )2$in( )%c)
  53.  
  54. (c11) /* We are not limited to numeric coefficients either. The Schmidt
  55.        algorithm will try to find symbolic particular solutions. */
  56. /* Kamke-1.104 */
  57. x*diff(y,x)+a*x*y^2+2*y+b*x=0;
  58. |$label(0,15,Times New Roman,$(d11$))x$in( )$q(dy,dx)$hinge()$in( + )a$in( )x$in( )$sup(y,2)$hinge()$in( + )2$in( )y$hinge()$in( + )b$in( )x$hinge()$in( = )0
  59.  
  60. (c12) /* We can also force a specific method if we are sure of the type
  61.        (but we lose more often than not if we do it). */ 
  62. ode(%,y,x,riccati);
  63. |$label(-1,15,Times New Roman,)Trying  $in() $in()riccati
  64. |$label(-1,15,Times New Roman,)Trying  $in() $in()schmidt
  65. |$label(-1,15,Times New Roman,)FOUND   $in() $in()$paren($sqrt($in( - )$q(b,a))$in( - )$q(1,a$in( )x)$ina($, )$hinge()$in( - )$q(1,a$in( )x)$in( - )$sqrt($in( - )$q(b,a)),[,])
  66. |$label(0,15,Times New Roman,$(d12$))y$hinge()$in( = )$in( - )$q($paren(2$in( )%c$in( )b$in( )x$in( + )2$in( )%c$in( )$sqrt($in( - )$q(b,a)),$(,$))$in( )$sup($e(),2$in( )a$in( )$sqrt($in( - )b$in(/)a)$in( )x)$in( - )a$in( )$sqrt($in( - )$q(b,a))$in( )x$in( - )1,2$in( )%c$in( )a$in( )$sqrt($in( - )$q(b,a))$in( )x$in( )$sup($e(),2$in( )a$in( )$sqrt($in( - )b$in(/)a)$in( )x)$in( - )a$in( )x)
  67.  
  68. (c13) /*
  69.      2. SECOND ORDER O.D.E.'S
  70. */
  71. /* To demonstrate ODE's capability for second order and higher, we
  72.       start with some of the more difficult cases and ask for specific
  73.       methods to save demo time. (The normal mode is to apply ODE and
  74.       let it try various methods.) */
  75. /* Try one which won't yield to elementary methods, the Legendre equation.
  76. */
  77. eq: (1-x^2)*diff(y,x,2)-2*x*diff(y,x)+n*(n+1)*y=0;
  78. |$label(0,15,Times New Roman,$(d13$))$paren(1$in( - )$sup(x,2),$(,$))$in( )$q($sup(d,2)y,d$sup(x,2))$hinge()$in( - )2$in( )x$in( )$q(dy,dx)$hinge()$in( + )n$in( )$paren(n$in( + )1,$(,$))$in( )y$hinge()$in( = )0
  79.  
  80. (c14) assume(n>0)$
  81.  
  82. (c15) ode(eq,y,x,solvehyper);
  83. |$label(-1,15,Times New Roman,)Trying  $in() $in()solvehyper
  84. C:\MACSD2B\ode\hyper.fas being loaded.
  85. C:\MACSD2B\ode\sings.fas being loaded.
  86. |$label(-1,15,Times New Roman,)The singularities are:$in() $in()$matrix(3,1,$in( - )1,1,$greektext(Ñ))$in() $in()Choose  one.  
  87. 1;
  88. |$label(-1,15,Times New Roman,)Circle or halfplane?
  89. HALFPLANE;
  90.  
  91. |$label(0,15,Times New Roman,$(d15$))y$hinge()$in( = )$q(%k2$in( )$paren($sub(alegendre_p,- n- 1$ina($, )$hinge()0)$paren(x)$in( )log$paren($q(x$in( - )1,x$in( + )1))$in( + )$paren(2$in( )$sub($greektext(y),0)$paren(n$in( + )3)$in( - )2$in( )$sub($greektext(y),0)$paren(n$in( + )1)$in( - )3,$(,$))$in( )$sub(alegendre_p,- n- 1$ina($, )$hinge()0)$paren(x),$(,$))$in( + )%k1$in( )$sub(alegendre_p,- n- 1$ina($, )$hinge()0)$paren(x),$sup($paren($q(1,x$in( + )1),$(,$)),n)$in( )$sup($paren(x$in( + )1,$(,$)),n))
  92.  
  93. (c16) /* If you chose one of the singularities at +-1, then this step will
  94.      simplify the result. (If you chose INF, this command is unnecessary,
  95.      and presence of the undefined array function %Q generates an error .)
  96. */
  97. errcatch(ev(%, %k2=0, ratsimp));
  98. |$label(0,15,Times New Roman,$(d16$))$open([)y$hinge()$in( = )$q(%k1$in( )$sub(alegendre_p,- n- 1$ina($, )$hinge()0)$paren(x),$sup($paren($q(1,x$in( + )1),$(,$)),n)$in( )$sup($paren(x$in( + )1,$(,$)),n))$close(])
  99.  
  100. (c17) /* Voila, Legendre function denoted in Macsyma by %P[]() */
  101.  
  102. /* That's fine if we know it is a hypergeometric. There is also a
  103.       set solution method for Whittaker equations  (see Rainville,
  104.       Intermediate Differential Equations). */
  105. /*  Also try DEMO(ODE1);  DEMO(ODE2); DEMO(ODEFI); and DEMO(ODELIN2); .
  106.      Clean Up */
  107. (reset(odetutor), remove(y,dependency), remvalue(eq), forget(n>0))$
  108.